home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.5)
-
- import wx
- import sys
- import actions
- from common import profile, pref, setpref
- from eventStack import AppEventHandlerMixin
- from gui.addcontactdialog import AddContactDialog
- from gui.buddylist.aboutdialog import AboutDialog
- from gui.filetransfer import FileTransferDialog
- from gui.imdialogs import ShowNewIMDialog
- from gui.model.menus import *
- from gui.native.helpers import createEmail
- import gui.pref.prefsdialog as prefsdialog
- import gui.protocols as gui
- from gui.visuallisteditor import VisualListEditor
- from util.diagnostic import do_diagnostic
-
- def tracecall(fn):
- if getattr(sys, 'testing', False):
-
- def trace(*args):
- wx.GetApp().event_fired = fn
- return fn(*args)
-
- return trace
- else:
- return fn
-
- sorts = {
- actions.SortByNone: 'none',
- actions.SortByStatus: 'status',
- actions.SortByName: 'name',
- actions.SortByLogSize: 'log',
- actions.SortByService: 'service' }
- hwndMap = { }
- menuTitles = { }
- buddylist_panel_names = dict(status = _('Status Panel'), blist = _('Buddy List'), elist = _('Email Accounts'), slist = _('Social Networks'), clist = _('Connections'))
-
- class MainMenuEventHandler(AppEventHandlerMixin):
-
- def __init__(self):
- AppEventHandlerMixin.__init__(self)
-
-
- def register_handlers(self):
- self.AddHandlerForID(actions.NewStatusMessage, self.new_status_message)
- self.AddHandlerForID(actions.EditStatusMessage, self.edit_status_message)
- self.AddHandlerForID(actions.MyAccounts, self.accounts)
- self.AddHandlerForID(actions.NewIM, self.new_im)
- self.AddHandlerForID(actions.AddContact, self.add_contact)
- self.AddHandlerForID(actions.AddGroup, self.add_group)
- self.AddHandlerForID(actions.RenameSelection, self.rename_selection)
- self.AddHandlerForID(actions.DeleteSelection, self.delete_selection)
- self.AddHandlerForID(actions.SignOff, self.sign_off)
- self.AddHandlerForID(actions.AlwaysOnTop, self.always_on_top)
- self.AddHandlerForID(actions.Skins, self.skins)
- self.AddHandlerForID(actions.MenuBar, self.show_menubar)
- self.AddHandlerForID(actions.StatusPanel, self.show_status_panel)
- self.AddHandlerForID(actions.ArrangePanels, self.arrange_panels)
- self.AddHandlerForID(actions.ShowMobileContacts, self.show_mobile_contacts)
- self.AddHandlerForID(actions.ShowOfflineContacts, self.show_offline_contacts)
- self.AddHandlerForID(actions.GroupOfflineContacts, self.group_offline_contacts)
- self.AddHandlerForID(actions.HideOfflineGroups, self.hide_offline_groups)
- self.AddHandlerForID(actions.SortByNone, self.sort_by)
- self.AddHandlerForID(actions.SortByStatus, self.sort_by)
- self.AddHandlerForID(actions.SortByName, self.sort_by)
- self.AddHandlerForID(actions.SortByLogSize, self.sort_by)
- self.AddHandlerForID(actions.SortByService, self.sort_by)
- self.AddHandlerForID(actions.SortByAdvanced, self.sort_by)
- self.AddHandlerForID(actions.Preferences, self.show_preferences)
- self.AddHandlerForID(actions.FileTransferHistory, self.show_file_transfer_history)
- self.AddHandlerForID(actions.ChatHistory, self.show_chat_history)
- self.AddHandlerForID(actions.Documentation, self.show_documentation)
- self.AddHandlerForID(actions.SupportForums, self.show_support_forums)
- self.AddHandlerForID(actions.SubmitBugReport, self.submit_bug_report)
- self.AddHandlerForID(actions.SuggestAFeature, self.suggest_a_feature)
- self.AddHandlerForID(actions.ShowDebugConsole, self.show_debug_console)
- self.AddHandlerForID(actions.RunTests, self.run_tests)
- self.AddHandlerForID(actions.InviteYourFriends, self.invite_your_friends)
- self.AddHandlerForID(actions.About, self.show_about)
- self.Bind(wx.EVT_MENU_OPEN, self.update_menu)
- if 'wxMSW' in wx.PlatformInfo:
- parentFrame = self.get_buddy_list_frame()
- parentFrame.BindWin32(WM_INITMENUPOPUP, self._initmenupopup)
-
-
- if 'wxMSW' in wx.PlatformInfo:
-
- def _initmenupopup(self, hWnd, msg, wParam, lParam):
-
- try:
- menu = hwndMap[wParam]
- except KeyError:
- buddylist = self.get_buddy_list_frame()
- if buddylist:
- menubar = buddylist.MenuBar
-
- for i in xrange(menubar.MenuCount):
- amenu = menubar.GetMenu(i)
- if amenu.HMenu not in hwndMap:
- hwndMap[amenu.HMenu] = amenu
-
- if amenu.HMenu == wParam:
- menu = amenu
- break
- continue
-
-
- if menu:
- evt = wx.PyCommandEvent(wx.EVT_MENU_OPEN, menu.Id)
- evt.Menu = menu
- menu.Handler.ProcessEvent(evt)
-
-
-
-
- def fire_event_for_action(action, target = None):
- if not target:
- target = wx.GetApp()
-
- if target:
- event = wx.CommandEvent(wx.EVT_COMMAND_MENU_SELECTED, action)
- target.ProcessEvent(event)
-
-
-
- def get_buddy_list_frame(self):
- buddylist = None
- app = wx.GetApp()
- if app:
- buddylist = app.buddy_frame
-
- return buddylist
-
-
- def get_buddy_list_panel(self):
- buddylist = self.get_buddy_list_frame()
- if buddylist:
- return buddylist.buddyListPanel
- else:
- return None
-
-
- def update_menu(self, event):
- menu = event.GetMenu()
- menubar = wx.GetApp().buddy_frame.MenuBar
- if menubar:
- title = None
- if menu in menuTitles:
- title = menuTitles[menu]
- else:
- for i in xrange(menubar.MenuCount):
- iter_menu = menubar.GetMenu(i)
- if iter_menu == menu:
- title = menuTitles[menu] = menubar.GetMenuLabel(i)
- continue
- for item in iter_menu.MenuItems:
- if item.IsSubMenu() and menu == item.SubMenu:
- title = menuTitles[menu] = item.GetItemLabel()
- continue
-
-
- if title == _('&Digsby'):
- self.update_digsby_menu(menu)
- elif title == _('&Sort By'):
- self.update_sort_menu(menu)
- elif title == _('&View'):
- self.update_view_menu(menu)
-
-
-
-
- def update_digsby_menu(self, menu):
- buddylist = self.get_buddy_list_panel()
- if buddylist:
- b = buddylist.blist.SelectedItem
- OfflineGroup = OfflineGroup
- import contacts.buddylistfilters
- allow_add = any((lambda .0: for x in .0:
- x.allow_contact_add)(profile.account_manager.connected_accounts))
- menu.Enable(actions.NewIM, allow_add)
- menu.Enable(actions.AddContact, allow_add)
- menu.Enable(actions.AddGroup, allow_add)
- renameitem = menu.FindItemById(actions.RenameSelection)
- deleteitem = menu.FindItemById(actions.DeleteSelection)
- if b is None and getattr(b, 'iswidget', False) or isinstance(b, OfflineGroup):
- renameitem.SetItemLabel(_('&Rename Selection'))
- deleteitem.SetItemLabel(_('&Delete Selection'))
- renameitem.Enable(False)
- deleteitem.Enable(False)
- else:
- renameitem.SetItemLabel(_('&Rename %s') % getattr(b, 'alias', b.name))
- deleteitem.SetItemLabel(_('&Delete %s') % getattr(b, 'alias', b.name))
- renameitem.Enable(True)
- deleteitem.Enable(True)
-
-
-
- def update_sort_menu(self, menu):
- checkedOne = False
- sortby = pref('buddylist.sortby', 'none none')
- for item in menu.MenuItems:
-
- try:
- if item.Id in sorts:
- sorttypes = sorts[item.Id] + ' none'
- else:
- sorttypes = object()
- except IndexError:
- sorttypes = object()
-
- if item.Kind == wx.ITEM_CHECK:
- val = sorttypes == sortby
- item.Check(val)
- if val:
- checkedOne = True
-
- val
-
- if not checkedOne:
- list(menu.MenuItems)[-1].Check(True)
-
-
-
- def update_view_menu(self, menu):
- sortstatus = pref('buddylist.sortby').startswith('*status')
- showoff = pref('buddylist.show_offline')
- showmob = pref('buddylist.show_mobile')
- hidegroups = pref('buddylist.hide_offline_groups')
- groupoff = pref('buddylist.group_offline')
- showstat = pref('buddylist.show_status')
- showmenu = pref('buddylist.show_menubar')
- ontop = menu.FindItemById(actions.AlwaysOnTop)
- showmobile = menu.FindItemById(actions.ShowMobileContacts)
- showoffline = menu.FindItemById(actions.ShowOfflineContacts)
- groupoffline = menu.FindItemById(actions.GroupOfflineContacts)
- hideoffline = menu.FindItemById(actions.HideOfflineGroups)
- statuspanel = menu.FindItemById(actions.StatusPanel)
- menubar = menu.FindItemById(actions.MenuBar)
- showmobile.Check(showmob)
- showoffline.Check(showoff)
- statuspanel.Check(showstat)
- if menubar:
- menubar.Check(showmenu)
-
- buddy_frame = self.get_buddy_list_frame()
- if buddy_frame:
- ontop.Check(buddy_frame.HasFlag(wx.STAY_ON_TOP))
-
- if not sortstatus:
- pass
- groupoffline.Enable(showoff)
- if groupoff and not sortstatus:
- pass
- groupoffline.Check(showoff)
- hideoffline.Enable(not sortstatus)
- if (sortstatus or not showoff) and not sortstatus:
- pass
- hideoffline.Check(hidegroups)
-
-
- def new_status_message(self, event = None):
- new_custom_status = new_custom_status
- import gui.status
- new_custom_status(None, save_checkbox = True)
-
- new_status_message = tracecall(new_status_message)
-
- def edit_status_message(self, event = None):
- prefsdialog.show('status')
-
- edit_status_message = tracecall(edit_status_message)
-
- def accounts(self, event = None):
- prefsdialog.show('accounts')
-
- accounts = tracecall(accounts)
-
- def update_bool_pref(self, pref):
- profile.prefs[pref] = not profile.prefs[pref]
-
- update_bool_pref = tracecall(update_bool_pref)
-
- def update_check_pref(self, item, value):
- item.Check(value)
-
-
- def new_im(self, event = None):
- ShowNewIMDialog()
-
- new_im = tracecall(new_im)
-
- def add_contact(self, event = None):
- AddContactDialog.MakeOrShow()
-
- add_contact = tracecall(add_contact)
-
- def add_group(self, event = None):
- gui.protocols.add_group()
-
- add_group = tracecall(add_group)
-
- def rename_selection(self, event = None):
- buddylist = self.get_buddy_list_panel()
- if buddylist:
- buddylist.blist.rename_selected()
-
-
- rename_selection = tracecall(rename_selection)
-
- def delete_selection(self, event = None):
- buddylist = self.get_buddy_list_panel()
- if buddylist:
- buddylist.blist.delete_blist_item(buddylist.blist.SelectedItem)
-
-
- delete_selection = tracecall(delete_selection)
-
- def sign_off(self, event = None):
- profile.signoff()
-
- sign_off = tracecall(sign_off)
-
- def always_on_top(self, event = None):
- self.update_bool_pref('buddylist.always_on_top')
-
- always_on_top = tracecall(always_on_top)
-
- def skins(self, event = None):
- prefsdialog.show('appearance')
-
- skins = tracecall(skins)
-
- def show_menubar(self, event = None):
- pref = 'buddylist.show_menubar'
- self.update_bool_pref(pref)
- if not profile.prefs[pref]:
- wx.MessageBox(_('You can bring back the menubar by right clicking on the digsby icon in the task tray.'), _('Hide Menu Bar'))
-
-
- show_menubar = tracecall(show_menubar)
-
- def show_status_panel(self, event = None):
- self.update_bool_pref('buddylist.show_status')
-
- show_status_panel = tracecall(show_status_panel)
-
- def arrange_panels(self, event = None):
- if VisualListEditor.RaiseExisting():
- return None
-
- buddylist = self.get_buddy_list_panel()
- editor = VisualListEditor(buddylist, profile.prefs['buddylist.order'], buddylist_panel_names, (lambda l: setpref('buddylist.order', l)), _('Arrange Panels'))
- editor.Show()
-
- arrange_panels = tracecall(arrange_panels)
-
- def show_mobile_contacts(self, event = None):
- self.update_bool_pref('buddylist.show_mobile')
-
- show_mobile_contacts = tracecall(show_mobile_contacts)
-
- def show_offline_contacts(self, event = None):
- self.update_bool_pref('buddylist.show_offline')
-
- show_offline_contacts = tracecall(show_offline_contacts)
-
- def group_offline_contacts(self, event = None):
- self.update_bool_pref('buddylist.group_offline')
-
- group_offline_contacts = tracecall(group_offline_contacts)
-
- def hide_offline_groups(self, event = None):
- self.update_bool_pref('buddylist.hide_offline_groups')
-
- hide_offline_groups = tracecall(hide_offline_groups)
-
- def sort_by(self, event):
- if event.GetId() in sorts:
- setpref('buddylist.sortby', sorts[event.GetId()] + ' none')
- else:
- prefsdialog.show('contact_list')
-
- sort_by = tracecall(sort_by)
-
- def show_preferences(self, event = None):
- prefsdialog.show('accounts')
-
- show_preferences = tracecall(show_preferences)
-
- def show_file_transfer_history(self, event = None):
- FileTransferDialog.Display()
-
- show_file_transfer_history = tracecall(show_file_transfer_history)
-
- def show_chat_history(self, event = None):
- PastBrowser = PastBrowser
- import gui.pastbrowser
- PastBrowser.MakeOrShow()
-
- show_chat_history = tracecall(show_chat_history)
-
- def show_documentation(self, event = None):
- wx.LaunchDefaultBrowser('http://wiki.digsby.com')
-
- show_documentation = tracecall(show_documentation)
-
- def show_support_forums(self, event = None):
- wx.LaunchDefaultBrowser('http://forum.digsby.com')
-
- show_support_forums = tracecall(show_support_forums)
-
- def submit_bug_report(self, event = None):
- do_diagnostic()
-
- submit_bug_report = tracecall(submit_bug_report)
-
- def suggest_a_feature(self, event = None):
- createEmail('mailto:features@digsby.com')
-
- suggest_a_feature = tracecall(suggest_a_feature)
-
- def show_debug_console(self, event = None):
- wx.GetApp().toggle_crust()
-
- show_debug_console = tracecall(show_debug_console)
-
- def invite_your_friends(self, event = None):
- wx.LaunchDefaultBrowser('http://www.digsby.com/invite')
-
- invite_your_friends = tracecall(invite_your_friends)
-
- def show_about(self, event = None):
- diag = AboutDialog()
-
- try:
- diag.ShowModal()
- finally:
- diag.Close()
-
-
- show_about = tracecall(show_about)
-
- def run_tests(self, event = None):
- import tests.unittests as test
- testDialog = test.UnitTestDialog(None, -1, size = (400, 400))
- testDialog.Show()
-
- run_tests = tracecall(run_tests)
-
-